package com.aiwiown.face.domain;

import com.aiwiown.face.ApiObject;
import com.aiwiown.face.domain.params.ApiParamType;
import com.aiwiown.face.internal.mapping.ApiField;

import java.io.File;

/**
 * @ClassName : FaceDetectModel
 * @Description : 人脸检测和人脸分析
 * @Author : dbin0123
 * @Date: 2020-03-14 16:06
 */

public class FaceDetectModel extends ApiObject {
    private static final long serialVersionUID = -6491618813544318569L;

    /**
     * 图片的 URL
     */
    @ApiField("image_url")
    private String imageUrl;

    /**
     * 一个图片，二进制文件，需要用post multipart/form-data的方式上传
     */
    @ApiField(value = "image_file", paramType = ApiParamType.FILE)
    private File imageFile;
    /**
     * base64 编码的二进制图片数据
     * 如果同时传入了 image_url、image_file 和 image_base64 参数，本API使用顺序为 image_file 优先，image_url 最低。
     */
    @ApiField("image_base64")
    private String imageBase64;

    /**
     * 是否检测并返回人脸关键点
     * 2 	检测。返回 106 个人脸关键点。
     * 1    检测。返回 83 个人脸关键点。
     * 0    不检测
     * 注：本参数默认值为 0
     */

    @ApiField("return_landmark")
    private Integer returnLandmark = Integer.valueOf("0");

    /**
     * 是否检测并返回根据人脸特征判断出的年龄、性别、情绪等属性(默认值:none)
     * gender,age,smiling(smile),headpose,facequality,blur,eyestatus,emotion,ethnicity,beauty,mouthstatus,eyegaze,skinstatus
     */
    @ApiField("return_attributes")
    private String returnAttributes = "none";

    /**
     * 是否检测并返回所有人脸的人脸关键点和人脸属性。(仅正式 API Key 可以使用)
     * 如果不使用此功能，则本 API 只会对人脸面积最大的五个人脸分析人脸关键点和人脸属性。
     * 1 是
     * 0 否
     */
    @ApiField("calculate_all")
    private Integer calculateAll;

    /**
     * 是否指定人脸框位置进行人脸检测(仅正式 API Key 可以使用)
     */
    @ApiField("face_rectangle")
    private String faceRectangle;

    /**
     * 颜值评分分数区间的最小值。默认为0
     * 注：默认颜值评分分数区间为0-100.可通过beauty_score_min和beauty_score_max来调节分数区间，满足您的场景需求。
     */
    @ApiField("beauty_score_min")
    private Integer beautyScoreMin = Integer.valueOf("0");

    /**
     * 颜值评分分数区间的最大值。默认为100
     */
    @ApiField("beauty_score_max")
    private Integer beautyScoreMax = Integer.valueOf("100");

    public String getImageUrl() {
        return imageUrl;
    }

    public void setImageUrl(String imageUrl) {
        this.imageUrl = imageUrl;
    }

    public File getImageFile() {
        return imageFile;
    }

    public void setImageFile(File imageFile) {
        this.imageFile = imageFile;
    }

    public String getImageBase64() {
        return imageBase64;
    }

    public void setImageBase64(String imageBase64) {
        this.imageBase64 = imageBase64;
    }

    public Integer getReturnLandmark() {
        return returnLandmark;
    }

    public void setReturnLandmark(Integer returnLandmark) {
        this.returnLandmark = returnLandmark;
    }

    public String getReturnAttributes() {
        return returnAttributes;
    }

    public void setReturnAttributes(String returnAttributes) {
        this.returnAttributes = returnAttributes;
    }

    public Integer getCalculateAll() {
        return calculateAll;
    }

    public void setCalculateAll(Integer calculateAll) {
        this.calculateAll = calculateAll;
    }

    public String getFaceRectangle() {
        return faceRectangle;
    }

    public void setFaceRectangle(String faceRectangle) {
        this.faceRectangle = faceRectangle;
    }

    public Integer getBeautyScoreMin() {
        return beautyScoreMin;
    }

    public void setBeautyScoreMin(Integer beautyScoreMin) {
        this.beautyScoreMin = beautyScoreMin;
    }

    public Integer getBeautyScoreMax() {
        return beautyScoreMax;
    }

    public void setBeautyScoreMax(Integer beautyScoreMax) {
        this.beautyScoreMax = beautyScoreMax;
    }
}
